import { fileURLToPath, URL } from 'node:url'

import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'

import path from 'path'
//element-plus 按需导入vite配置
import Icons from 'unplugin-icons/vite'
import IconsResolver from 'unplugin-icons/resolver'
//element 自动按需引入插件
import AutoImport from 'unplugin-auto-import/vite'
import Components from 'unplugin-vue-components/vite'
import { ElementPlusResolver } from 'unplugin-vue-components/resolvers'
// import Inspect from 'vite-plugin-inspect'

//vant 自动按需引入插件
import { VantResolver } from '@vant/auto-import-resolver';

const pathSrc = path.resolve(__dirname, 'src')
// https://vitejs.dev/config/
export default defineConfig({
  plugins: [
    vue(),
    AutoImport({
      // 自动导入 Vue 相关函数，如：ref, reactive, toRef 等
      imports: ['vue'],
      resolvers: [
          ElementPlusResolver(),
          // 自动导入图标组件
          IconsResolver({
            prefix: 'Icon',
          }),
      ],
      dts: path.resolve(pathSrc, 'auto-imports.d.ts'),
    }),
    Components({
      resolvers: [
        // 自动注册图标组件
        IconsResolver({
          enabledCollections: ['ep'],
        }),
        // 自动导入 Element Plus 组件
        ElementPlusResolver(),
          //自动导入vant组件
        // VantResolver()

      ],
      dts: path.resolve(pathSrc, 'components.d.ts'),
    }),
    Icons({
      autoInstall: true,
    }),
  ],
  base:'/smart',
  resolve: {
    alias: {
      '@': fileURLToPath(new URL('./src', import.meta.url))
    }
  },
    /*主要看下面这段
  * 将我们的constant.scss中的scss常量加载到全局，这样我们可以在style标签中，随意使用这些scss常量
  * */
    css: {
      preprocessorOptions: {
        scss: {
          additionalData: '@import "@/style/constant.scss";'
        }
      }
    },
  //跨域问题的解决
  /*
    首先 有些网站的根路径不相同，也就是域不同，需要进行跨域处理
    跨域处理其实就是创建一个转接口，负责将两个不同根路径的函数进行转接
  * */
  server: {
      cors: true,
      proxy: {
        '/store': {  //建立访问路径 /store
            //设置访问/store的根路径，后续的路径会在上面相加
            target: 'https://www.fastmock.site/',
            changeOrigin: true,
            ws: true,
            // 重新将路径改写到store上面
            rewrite: (path) => path.replace(/^\/store/, '')
        }
      }
  }
})
